package vshevchuk;

import java.util.Scanner;

public class Base 
{
	private int n;
	private int f;
	 
	public void init()
	{
		n=33;
		f=66;
	}
	
	public String toString () 
	{
		return "Base:"+n+";"+f+"\r\n"; 
	}

	 private static String getNameClass (String str, String format) 
	 { 
		 String name="";
		 
		switch (format)
		{
			case "CSV":		
			{ 
				name=str;
				name=name.split(":")[0];
				break;
			}
			case "XML":	
			{
				name=str;
				name=name.substring(1);
				name=name.substring(0,name.indexOf(">"));
				break;
			}
			case "JSON":
			{
				name=str;
				name=name.substring(name.indexOf("\"")+1,name.indexOf(":")-1);
				break;
			}
			default : 		
			{
				name=str;
				name=name.split(":")[0];
				break; 
			}
		}
		 return name;	        
	}
	
	public static Base CreatClass (String str, String format) throws  Exception
	{
		Base p=null;
		try 
		{
			Class a = Class.forName("vshevchuk."+getNameClass(str, format));
			Object obj = a.newInstance();
			p = (Base) obj;
	
			switch (format)
			{
				case "csv":		p.inString(str); break;
				case "XML":		p.inXML(str); 	break;
				case "JSON":	p.inJSON(str); 	break;
				default : 		p.inString(str);  
			}
			
		}
		catch (Exception e)
		{
	
		}
		return p;
	}
	
	public void inString (String str) 
	{
		str=str.substring(str.indexOf(":")+1);
		Scanner s = new Scanner(str).useDelimiter("\\s*;\\s*");
		n=s.nextInt();
		f=s.nextInt();
	}
	
	public String toXML () 
	{
		return "<Base><int_n>"+n+"</int_n>"+"<int_f>"+f+"</int_f></Base>\r\n";
	}
	
	public void inXML (String str) 
	{
		n=Integer.parseInt(str.substring(str.indexOf("n")+2,str.indexOf("/int_n")-1));
		f=Integer.parseInt(str.substring(str.indexOf("f")+2,str.indexOf("/int_f")-1));
	}
	
	public String toJSON() 
	{
		return "{\r\n\"Base\": {\r\n\t\"n\":"+n+",\r\n\t\"f\":"+f+
				"\r\n\t}\r\n}\r\n";
	}
	
	public void inJSON(String str) 
	{
		n=Integer.parseInt(str.substring(str.indexOf("n")+3,str.indexOf("f")-3));
		f=Integer.parseInt(str.substring(str.indexOf("f")+3,str.indexOf("}")-1));
	}
	
}
